/****************************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation
**
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
**   * Redistributions of source code must retain the above copyright
**     notice, this list of conditions and the following disclaimer.
**   * Redistributions in binary form must reproduce the above copyright
**     notice, this list of conditions and the following disclaimer in
**     the documentation and/or other materials provided with the
**     distribution.
**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
**     the names of its contributors may be used to endorse or promote
**     products derived from this software without specific prior written
**     permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
** $QT_END_LICENSE$
** Description:
****************************************************************************/


#include <QDateTime>
#include <QMessageBox>
#include "lightappprivate.h"
#include "lightwrapper.h"




/*!
  Constructor for the LightAppPrivate class
  first stage constructor.
*/

LightAppPrivate* LightAppPrivate::NewL(LightWrapper *aLightWrapperPtr)
{
    LightAppPrivate* self = new (ELeave) LightAppPrivate(aLightWrapperPtr);
    CleanupStack::PushL(self);
    self->ConstructL();
    CleanupStack::Pop(self);
    return self;
}

/*!
  Symbian second stage constructor for the LightAppPrivate class.
*/

void LightAppPrivate::ConstructL()
{
    iLight = CHWRMLight::NewL(this);
}

/*!
 Private constructor - initialise the pointer to the public API class
 and make this high priority for scheduling.
*/
LightAppPrivate::LightAppPrivate(LightWrapper *aLightWrapperPtr):iLightWrapper(aLightWrapperPtr)
{

}

/*!
  Initialize function is used to reserve the initial display and set the
  light intensity to default.
*/
void LightAppPrivate::Initialize()
{
    iLight->ReserveLightL(CHWRMLight::EPrimaryDisplay);
    iLight->LightOnL(CHWRMLight::EPrimaryDisplay);
}

/*!
  Destructor for LightAppPrivate class.
*/

LightAppPrivate::~LightAppPrivate()
{

}

/*!
  LightStatusChanged  function is called whenever there is a change in status
  of device display. This function in turn calls the display function of the wrapper.
*/

void LightAppPrivate::LightStatusChanged(TInt aTarget, CHWRMLight::TLightStatus aStatus)
{
   if(aTarget == CHWRMLight::EPrimaryDisplay)
    switch ( aStatus )
            {
            case CHWRMLight::ELightOn:
                iLightWrapper->display("On");
                break;
            case CHWRMLight::ELightOff:
                iLightWrapper->display("Off");
                break;
            case CHWRMLight::ELightBlink:
                iLightWrapper->display("Blink");
                break;
            case CHWRMLight::ELightStatusUnknown:
                iLightWrapper->display("Unknown");
                break;
            default:
                iLightWrapper->display("Unknown");
                break;
            }
}


/*!
 LighMax function sets the display to maximum intensity.
*/

void LightAppPrivate::LightMax()
{
   iLight->LightOnL(CHWRMLight::EPrimaryDisplay, 8000, KHWRMLightMaxIntensity, ETrue);

}

/*!
 LighOff function sets the display to off state.
*/

void LightAppPrivate::LightOff()
{
   iLight->LightOffL(CHWRMLight::EPrimaryDisplay, 8000);
}

/*!
 LighBlink function sets the display to Blinking state.
*/

void LightAppPrivate::LightBlink()
{
   iLight->LightBlinkL(CHWRMLight::EPrimaryDisplay,8000);
}

/*!
 LighOn function sets the display to default on status.
*/

void LightAppPrivate::LightOn()
{
    iLight->LightOnL(CHWRMLight::EPrimaryDisplay);
}

/*!
 LighMin function sets the display to minimum display plus 5.
*/
void LightAppPrivate::LightMin()
{
   // KHWRMDefaultIntensity is of value 0 which sets the display with no light intensity,
   // therefore a value of 5 is added to show a small light intensity on the display.
   iLight->LightOnL(CHWRMLight::EPrimaryDisplay, 8000, KHWRMDefaultIntensity + 5, ETrue);
}



